package com.aaa;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Test {
    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mp?serverTimezone=Asia/Shanghai", "root", "root");
            conn.setAutoCommit(false);//改为手动提交
            PreparedStatement ps = conn.prepareStatement("update tbl_user set balance=balance-1000 where uname='王静坤'");
            ps.executeUpdate();
//            int c = 10 / 0;//人为制造异常
            ps = conn.prepareStatement("update tbl_user set balance=balance+1000 where uname='闫克起'");
            ps.executeUpdate();
            System.out.println("转账成功");
            conn.commit();//事务提交
        } catch (Exception e) {
            System.out.println("转账失败"); //王静坤减钱成功 但是闫克起没有加钱。 我们应该把上面这些动作放在一个事务中管理。但是jdbc默认事务是自动提交。
            conn.rollback();//事务回滚
        }
    }
}
